home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / il / ilSpatialImg.z / ilSpatialImg
Encoding:
Text File  |  2002-10-03  |  28.3 KB  |  528 lines

  1.  
  2.  
  3.  
  4. iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))    IIIImmmmaaaaggggeeeeVVVViiiissssiiiioooonnnn LLLLiiiibbbbrrrraaaarrrryyyy CCCC++++++++ RRRReeeeffffeeeerrrreeeennnncccceeee MMMMaaaannnnuuuuaaaallll    iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg - Base class for spatial operator images
  10.  
  11. IIIINNNNHHHHEEEERRRRIIIITTTTSSSS FFFFRRRROOOOMMMM
  12.      ilLink : ilImage : ilCacheImg : ilMemCacheImg : ilOpImg
  13.  
  14. HHHHEEEEAAAADDDDEEEERRRR FFFFIIIILLLLEEEE
  15.      #include <il/ilSpatialImg.h>
  16.  
  17. CCCCLLLLAAAASSSSSSSS DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  18.      ilSpatialImg is the base class for spatial operator images.  ilSpatialImg
  19.      has a pure virtual member function and thus cannot be created as an
  20.      object.  It is intended to be used to derive spatial operator images.
  21.      However, a pointer to an ilSpatialImg can be declared.
  22.  
  23.      ilSpatialImg handles the messy details of allocating a working buffer and
  24.      reading input data based on the size of the kernel being used and the
  25.      current edge mode. The edge mode specifies how to handle pixels along the
  26.      edge of a page. For example, additional input data can be used to compute
  27.      a full page. In this case, the amount of additional input data read
  28.      depends on the size of the kernel being used.
  29.  
  30.      UUUUssssiiiinnnngggg iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg
  31.      Spatial operators compute a result based on a local neighborhood of
  32.      pixels.  The size of the kernel being used determines the size of the
  33.      neighborhood.  Therefore, the size of the kernel must be known to compute
  34.      the size of the working buffer.
  35.  
  36.      The edge mode determines how pixels along the edge of the image are
  37.      handled. By default, additional input data is read to allow pixels along
  38.      the edge to be computed. Several edge modes are supported such as
  39.      _i_l_P_a_d_S_r_c, _i_l_P_a_d_D_s_t, _i_l_N_o_P_a_d, _i_l_W_r_a_p and _i_l_R_e_f_l_e_c_t.
  40.  
  41.      For more details see sssseeeettttEEEEddddggggeeeeMMMMooooddddeeee().
  42.  
  43.      In addition, an offset table, _k_e_r_n_O_f_f, and a value table, _k_e_r_n_V_a_l, are
  44.      built based on the input kernel specified. The offset table contains
  45.      offsets into the input buffer to access data corresponding to nonzero
  46.      kernel elements.  The value table contains the nonzero kernel elements
  47.      and corresponds to the offset table. These tables are provided for
  48.      convenience to derived classes that choose to use them.
  49.  
  50.      DDDDeeeerrrriiiivvvviiiinnnngggg NNNNeeeewwww CCCCllllaaaasssssssseeeessss ffffrrrroooommmm iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg
  51.      Each derived class must define a constructor to set valid data types and
  52.      the valid data orders it handles. In addition, the constructor also
  53.      initializes the additive bias, edge mode and kernel to be used (see
  54.      sssseeeettttBBBBiiiiaaaassss(), sssseeeettttEEEEddddggggeeeeMMMMooooddddeeee() and sssseeeettttKKKKeeeerrrrnnnneeeellll()).
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.                                                                         PPPPaaaaggggeeee 1111
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68. iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))    IIIImmmmaaaaggggeeeeVVVViiiissssiiiioooonnnn LLLLiiiibbbbrrrraaaarrrryyyy CCCC++++++++ RRRReeeeffffeeeerrrreeeennnncccceeee MMMMaaaannnnuuuuaaaallll    iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))
  69.  
  70.  
  71.  
  72.      Each derived class defines the function ccccaaaallllccccPPPPaaaaggggeeee() to implement its
  73.      particular image processing algorithm. This function is passed pointers
  74.      to an input buffer, an output buffer, and parameters describing the start
  75.      and end of data to be computed in the input buffer. The input buffer is
  76.      allocated and filled with input data by pppprrrreeeeppppaaaarrrreeeeRRRReeeeqqqquuuueeeesssstttt(). For more
  77.      details see ccccaaaallllccccPPPPaaaaggggeeee().
  78.  
  79.      In addition, each derived class can define a function called rrrreeeesssseeeettttOOOOpppp() to
  80.      reset various parameters used in its specific image processing algorithm.
  81.      If rrrreeeesssseeeettttOOOOpppp() is defined, it hides the rrrreeeesssseeeettttOOOOpppp() inherited from ilOpImg
  82.      and so it must explicitly call iiiillllOOOOppppIIIImmmmgggg::::::::rrrreeeesssseeeettttOOOOpppp().  This function is
  83.      automatically called during a reset operation.
  84.  
  85. CCCCLLLLAAAASSSSSSSS MMMMEEEEMMMMBBBBEEEERRRR FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNN SSSSUUUUMMMMMMMMAAAARRRRYYYY
  86.      CCCCoooonnnnssssttttrrrruuuuccccttttoooorrrr
  87.  
  88.           ilSpatialImg()                                            _p_r_o_t_e_c_t_e_d
  89.           ilSpatialImg(_i_l_I_m_a_g_e* _i_n_p_u_t, _i_l_E_d_g_e_M_o_d_e _e_M_o_d_e = _i_l_P_a_d_S_r_c) _p_r_o_t_e_c_t_e_d
  90.  
  91.      SSSSeeeettttttttiiiinnnngggg ssssppppaaaattttiiiiaaaallll ooooppppeeeerrrraaaattttoooorrrr ppppaaaarrrraaaammmmeeeetttteeeerrrrssss
  92.  
  93.           void setDynamicKernel(ilKernel* kern)
  94.           void setEdgeMode(ilEdgeMode eMode = ilPadSrc)
  95.           void setKernel(const ilKernel* kern = NULL)
  96.           void setKernelSize(int x, int y, int z = 1)
  97.           void setKernFlags(int of = 0, int vf = 0)                 _p_r_o_t_e_c_t_e_d
  98.  
  99.      QQQQuuuueeeerrrryyyyiiiinnnngggg ssssppppaaaattttiiiiaaaallll ooooppppeeeerrrraaaattttoooorrrr ppppaaaarrrraaaammmmeeeetttteeeerrrrssss
  100.  
  101.           ilEdgeMode getEdgeMode()
  102.           const ilKernel* getKernel()
  103.           void getKernelSize(int& x, int& y, int& z)
  104.           void getKernelSize(int& x, int& y)
  105.  
  106.      IIIImmmmaaaaggggeeee pppprrrroooocccceeeessssssssiiiinnnngggg ooooppppeeeerrrraaaattttiiiioooonnnn
  107.  
  108.           virtual
  109.           ilStatus calcPage(void* inBuf, void* outBuf, ilXYZCint start,
  110.                             ilXYZCint end) = 0                      _p_r_o_t_e_c_t_e_d
  111.  
  112.      OOOOppppeeeerrrraaaattttoooorrrr rrrreeeesssseeeetttt
  113.  
  114.           void resetOp()                                            _p_r_o_t_e_c_t_e_d
  115.  
  116.  
  117. FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNN DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNNSSSS
  118.      iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg(((())))
  119.  
  120.           ilSpatialImg()                                            _p_r_o_t_e_c_t_e_d
  121.           ilSpatialImg(ilImage* input, ilEdgeMode eMode = ilPadSrc) _p_r_o_t_e_c_t_e_d
  122.  
  123.  
  124.  
  125.  
  126.  
  127.                                                                         PPPPaaaaggggeeee 2222
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134. iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))    IIIImmmmaaaaggggeeeeVVVViiiissssiiiioooonnnn LLLLiiiibbbbrrrraaaarrrryyyy CCCC++++++++ RRRReeeeffffeeeerrrreeeennnncccceeee MMMMaaaannnnuuuuaaaallll    iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))
  135.  
  136.  
  137.  
  138.           Two constructors are provided for convenience. The first constructor
  139.           takes no arguments and is called by default during creation of a
  140.           derived class.  The new object will have a NULL input image and an
  141.           edge mode of _i_l_P_a_d_S_r_c.  The second constructor initializes the input
  142.           image to _i_n_p_u_t and the edge mode to the enumerated type _i_l_E_d_g_e_M_o_d_e
  143.           specified by _e_M_o_d_e; see also sssseeeettttEEEEddddggggeeeeMMMMooooddddeeee().  The kernel is initially
  144.           NULL; it may be set with sssseeeettttKKKKeeeerrrrnnnneeeellll().  The bias value is initially
  145.           zero; it may be set with sssseeeettttBBBBiiiiaaaassss() (inherited from ilOpImg).
  146.  
  147.      ccccaaaallllccccPPPPaaaaggggeeee(((())))
  148.  
  149.           virtual
  150.           ilStatus calcPage(void* inBuf, void* outBuf,
  151.                             ilXYZCint start, ilXYZCint end) = 0     _p_r_o_t_e_c_t_e_d
  152.  
  153.  
  154.           This pure virtual function is defined by a derived class to process
  155.           the data in the buffer pointed to by _i_n_B_u_f, and write the results to
  156.           the buffer pointed to by _o_u_t_B_u_f. A derived class defines this
  157.           function to implement its particular spatial processing algorithm.
  158.           This function is called by eeeexxxxeeeeccccuuuutttteeeeRRRReeeeqqqquuuueeeesssstttt() to process a page of
  159.           data.
  160.  
  161.           The input buffer is of the type specified by working data type,
  162.           _w_T_y_p_e. The output buffer is of the type specified by image data
  163.           type, _d_t_y_p_e. The derived class must convert from _w_T_y_p_e to _d_t_y_p_e as
  164.           needed. The parameters _s_t_a_r_t and _e_n_d are of type _i_l_X_Y_Z_C_i_n_t.  They
  165.           describe where the data to be computed starts and ends in _i_n_B_u_f. For
  166.           example, a derived class should use _s_t_a_r_t._x and _e_n_d._x to limit
  167.           computation in the x dimension. ilSpatialImg provides other
  168.           protected member variables that may be useful to a derived class.
  169.           _i_n_S_t_r and _o_u_t_S_t_r, for example, provide all the strides for _i_n_B_u_f and
  170.           _o_u_t_B_u_f, _k_e_r_n_S_z gives the number of nonzero kernel elements, and
  171.           _k_e_r_n_O_f_f and _k_e_r_n_V_a_l provide the kernel offset and value table. See
  172.           _i_l_S_p_a_t_i_a_l_I_m_g._h for the complete list. The following code fragment is
  173.           an example of the computations in ccccaaaallllccccPPPPaaaaggggeeee(). This code implements a
  174.           convolution and assumes both _w_T_y_p_e and _d_t_y_p_e are _i_l_F_l_o_a_ts.  Also,
  175.           the kernel weights are assumed to sum to 1.0, so that no clamping is
  176.           necessary.
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.                                                                         PPPPaaaaggggeeee 3333
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200. iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))    IIIImmmmaaaaggggeeeeVVVViiiissssiiiioooonnnn LLLLiiiibbbbrrrraaaarrrryyyy CCCC++++++++ RRRReeeeffffeeeerrrreeeennnncccceeee MMMMaaaannnnuuuuaaaallll    iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))
  201.  
  202.  
  203.  
  204.           float *in = (float *)inBuf;
  205.           float *out = (float *)outBuf;
  206.           for (int ci = start.c; ci < end.c; ci++) {
  207.                /* iterate through all channels */
  208.                int cSrcIndex = ci*inStr.c;
  209.                int cDstIndex = ci*outStr.c;
  210.  
  211.                for (int zi = start.z; zi < end.z; zi++) {
  212.                     /* iterate through z dimension */
  213.                     int zSrcIndex = zi*inStr.z + cSrcIndex;
  214.                     int zDstIndex = zi*outStr.z + cDstIndex;
  215.  
  216.                     for (int yi = start.y; yi < end.y; yi++) {
  217.                          /* iterate through y dimension */
  218.                          int srcIndex = start.x*inStr.x + yi*inStr.y +
  219.                                  zSrcIndex;
  220.                          int dstIndex = start.x*outStr.x + yi*outStr.y +
  221.                                  zDstIndex;
  222.  
  223.                          for (int xi = start.x; xi < end.x;
  224.                               xi++, srcIndex += inStr.x, dstIndex += outStr.x) {
  225.                               /*
  226.                                * iterate through x dimension
  227.                                * the variable bias, is inherited from ilOpImg
  228.                                */
  229.                               float sum = bias;
  230.  
  231.                               /*
  232.                                * kernVal should be cast to a float for any
  233.                                * wType, except ilDouble, in which case it
  234.                                * should be cast to a double.
  235.                                */
  236.                               float *kr = (float *)kernVal;
  237.                               for (int k = 0 ; k < kernSz ; k++)
  238.                                   /* iterate through nonzero kernel values */
  239.                                    sum += in[srcIndex+kernOff[k]] * kr[k];
  240.                               /* note kernOff use to access correct input */
  241.                               out[dstIndex] = sum;
  242.                          }
  243.                     }
  244.                }
  245.           }
  246.  
  247.  
  248.      ggggeeeettttEEEEddddggggeeeeMMMMooooddddeeee(((())))
  249.  
  250.           ilEdgeMode getEdgeMode()
  251.  
  252.  
  253.           Returns the current edge mode as the enumerated type ilEdgeMode. See
  254.           also sssseeeettttEEEEddddggggeeeeMMMMooooddddeeee().
  255.  
  256.  
  257.  
  258.  
  259.                                                                         PPPPaaaaggggeeee 4444
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266. iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))    IIIImmmmaaaaggggeeeeVVVViiiissssiiiioooonnnn LLLLiiiibbbbrrrraaaarrrryyyy CCCC++++++++ RRRReeeeffffeeeerrrreeeennnncccceeee MMMMaaaannnnuuuuaaaallll    iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))
  267.  
  268.  
  269.  
  270.      ggggeeeettttKKKKeeeerrrrnnnneeeellll(((())))
  271.  
  272.           const ilKernel *getKernel()
  273.  
  274.  
  275.           This function returns the current input kernel value.
  276.  
  277.      ggggeeeettttKKKKeeeerrrrnnnneeeellllSSSSiiiizzzzeeee(((())))
  278.  
  279.           void getKernelSize(int& x, int& y)
  280.           void getKernelSize(int& x, int& y, int& z)
  281.  
  282.  
  283.           This function is overloaded to conveniently handle the 2D case. It
  284.           returns the current kernel size in _x, _y, and optionally, _z. See also
  285.           sssseeeettttKKKKeeeerrrrnnnneeeellllSSSSiiiizzzzeeee().
  286.  
  287.      rrrreeeesssseeeettttOOOOpppp(((())))
  288.  
  289.           void resetOp()                                            _p_r_o_t_e_c_t_e_d
  290.  
  291.  
  292.           This function is automatically called during a reset operation. It
  293.           updates various image parameters such as working data type, order
  294.           and size. It also initializes various parameters based on the kernel
  295.           size and edge mode and rebuilds kernel tables as needed. If a
  296.           derived class redefines rrrreeeesssseeeettttOOOOpppp(), it must explicitly call
  297.           iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg::::::::rrrreeeesssseeeettttOOOOpppp().
  298.  
  299.      sssseeeettttDDDDyyyynnnnaaaammmmiiiiccccKKKKeeeerrrrnnnneeeellll(((())))
  300.  
  301.           void setDynamicKernel(ilKernel* kern)
  302.  
  303.  
  304.           This functions sets this objects input kernel to the ilKernel
  305.           pointed to by _k_e_r_n. This function differs from
  306.           iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg::::::::sssseeeettttKKKKeeeerrrrnnnneeeellll iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmggggSSSSeeeettttKKKKeeeerrrrnnnneeeellll in that this
  307.           ilSpatialImg object will watch for changes to the input kernel.
  308.  
  309.      sssseeeettttEEEEddddggggeeeeMMMMooooddddeeee(((())))
  310.  
  311.           void setEdgeMode(ilEdgeMode eMode = ilPadSrc)
  312.  
  313.  
  314.           This function sets the edge mode to the enumerated type _i_l_E_d_g_e_M_o_d_e
  315.           specified by _e_M_o_d_e. The edge mode specifies how to handle pixels
  316.           along the edge of the image. Spatial operators process a
  317.           neighborhood of input pixels defined by the kernel. Therefore,
  318.           output pixels within half the kernel size along the edge of the
  319.           image, do not have enough input data to be computed. This situation
  320.           can be handled in many ways as specified by the edge mode. Several
  321.           edge modes are supported such as: _i_l_P_a_d_S_r_c, _i_l_P_a_d_D_s_t, _i_l_N_o_P_a_d,
  322.  
  323.  
  324.  
  325.                                                                         PPPPaaaaggggeeee 5555
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332. iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))    IIIImmmmaaaaggggeeeeVVVViiiissssiiiioooonnnn LLLLiiiibbbbrrrraaaarrrryyyy CCCC++++++++ RRRReeeeffffeeeerrrreeeennnncccceeee MMMMaaaannnnuuuuaaaallll    iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))
  333.  
  334.  
  335.  
  336.           _i_l_W_r_a_p and _i_l_R_e_f_l_e_c_t.  The default edge mode is _i_l_P_a_d_S_r_c.
  337.  
  338.           For _i_l_P_a_d_S_r_c (pad source), extra input data is read, which allows
  339.           pixels near the edge to be processed. The amount of extra data read
  340.           depends on the kernel size in each dimension. The requested input
  341.           data is filled as needed near the edge of the image, with the
  342.           current _f_i_l_l_V_a_l_u_e.
  343.  
  344.           For _i_l_P_a_d_D_s_t (pad destination), the border along the edge of the
  345.           image is filled with its _f_i_l_l_V_a_l_u_e. This is done because the
  346.           resultant image is smaller than the input image by the kernel size
  347.           in each dimension.
  348.  
  349.           For _i_l_N_o_P_a_d (no pad), nothing is done about the borders and the
  350.           resulting image is reduced in size by the size of the kernel in each
  351.           dimension causing a shift toward the origin.
  352.  
  353.           For _i_l_W_r_a_p, data from the opposite edge in the source image is used
  354.           to fill in missing data along the edges.  The amount of data wrapped
  355.           depends on the size of the kernel in each dimension.
  356.  
  357.           For _i_l_R_e_f_l_e_c_t, data near an edge is reflected and used to fill in
  358.           missing data along the edges.  The amount of data reflected depends
  359.           on the size of the kernel in each dimension.
  360.  
  361.      sssseeeettttKKKKeeeerrrrnnnneeeellll(((())))
  362.  
  363.           void setKernel(const ilKernel* kern = NULL)
  364.  
  365.  
  366.           This function sets the input kernel to the ilKernel pointed to by
  367.           _k_e_r_n. The default value is NULL. This function calls sssseeeettttKKKKeeeerrrrnnnneeeellllSSSSiiiizzzzeeee()
  368.           to update the size of the kernel.
  369.  
  370.      sssseeeettttKKKKeeeerrrrnnnneeeellllSSSSiiiizzzzeeee(((())))
  371.  
  372.           void setKernelSize(int x, int y, int z = 1)
  373.  
  374.  
  375.           The x, y and z size of the kernel are set to _x, _y and _z.  This
  376.           function also sets the minimum page size based on the size of the
  377.           kernel. It is set to a multiple of the kernel size to enhance
  378.           efficiency.
  379.  
  380.      sssseeeettttKKKKeeeerrrrnnnnFFFFllllaaaaggggssss(((())))
  381.  
  382.           void setKernFlags(int of = 0, int vf = 0)                 _p_r_o_t_e_c_t_e_d
  383.  
  384.  
  385.           This function sets the kernel offset flag to _o_f and the kernel value
  386.           flag to _v_f. The default values are 0. The offset flag indicates that
  387.           the offset table used to read input data needs to be updated. The
  388.  
  389.  
  390.  
  391.                                                                         PPPPaaaaggggeeee 6666
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398. iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))    IIIImmmmaaaaggggeeeeVVVViiiissssiiiioooonnnn LLLLiiiibbbbrrrraaaarrrryyyy CCCC++++++++ RRRReeeeffffeeeerrrreeeennnncccceeee MMMMaaaannnnuuuuaaaallll    iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))
  399.  
  400.  
  401.  
  402.           value flag indicates that the value table that holds kernal values
  403.           needs to be updated.
  404.  
  405. IIIINNNNHHHHEEEERRRRIIIITTTTEEEEDDDD MMMMEEEEMMMMBBBBEEEERRRR FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNNSSSS
  406.    IIIInnnnhhhheeeerrrriiiitttteeeedddd ffffrrrroooommmm iiiillllOOOOppppIIIImmmmgggg
  407.      checkMinMax(), clearClamp(), getBias(), getClamp(), getInputMax(),
  408.      getInputMin(), getInputScaleMax(), getInputScaleMin(), getValidOrders(),
  409.      getValidTypes(), isClamped(), isDiff(), isPrecisionKept(),
  410.      keepPrecision(), resetOp(), setBias(), setClamp(), setMaxPageSize(),
  411.      setMinPageSize(), setValidOrder(), setValidType(), setWorkingType()
  412.  
  413.    IIIInnnnhhhheeeerrrriiiitttteeeedddd ffffrrrroooommmm iiiillllMMMMeeeemmmmCCCCaaaacccchhhheeeeIIIImmmmgggg
  414.      allocPage(), doUserPageAlloc(), enableMP(), executeRequest(),
  415.      finishRequest(), freePage(), getGlobalThrashMode(), getMpRequest(),
  416.      getPage(), getPageAllocTime(), getPageTime(), getRetainMode(),
  417.      getRetainPath(), getThrashMode(), getThrashTime(), getTotalPageTime(),
  418.      isMPenabled(), isUserPageAlloc(), prepareRequest(),
  419.      setGlobalThrashMode(), setPage(), setPageAllocTime(), setRetainMode(),
  420.      setRetainPath(), setThrashMode(),
  421.  
  422.    IIIInnnnhhhheeeerrrriiiitttteeeedddd ffffrrrroooommmm iiiillllCCCCaaaacccchhhheeeeIIIImmmmgggg
  423.      enablePagingCallback(), flush(), getCacheSize(),
  424.      isPagingCallbackEnabled(), listResident()
  425.  
  426.    IIIInnnnhhhheeeerrrriiiitttteeeedddd ffffrrrroooommmm iiiillllIIIImmmmaaaaggggeeee
  427.      addInput(), allocFillData(), checkColorModel(), checkValidOrder(),
  428.      checkValidType(), clipTile(), configureRetainedCache(), copy(),
  429.      copyTile(), copyTile3D(), copyTileCfg(), fillTile(), fillTile3D(),
  430.      fillTileRGB(), freeFillData(), getColorImg(), getColorModel(),
  431.      getColormap(), getCompression(), getConfig(), getCopyConverter(),
  432.      getCsize(), getDataType(), getDimensions(), getDirectInput(),
  433.      getDisplayCacheEnable(), getFill(), getFillData(), getFillValue(),
  434.      getHeight(), getHwEnable(), getHwHint(), getHwIntHint(), getHwOp(),
  435.      getHwPassTable(), getInput(), getInputTileRequirement(),
  436.      getLockTileSet(), getMaxColormapLevels(), getMaxValue(), getMinValue(),
  437.      getNumChans(), getNumInputs(), getOrder(), getOrientation(),
  438.      getPageBorder(), getPageBorderX(), getPageBorderY(), getPageBorderZ(),
  439.      getPageCounts(), getPageDelta(), getPageDimensions(), getPageIndices(),
  440.      getPageOrigin(), getPageOriginC(), getPageOriginX(), getPageOriginY(),
  441.      getPageOriginZ(), getPageSize(), getPageSizeC(), getPageSizePix(),
  442.      getPageSizeVal(), getPageSizeX(), getPageSizeY(), getPageSizeZ(),
  443.      getPixel(), getPixel3D(), getPriority(), getScaleMax(), getScaleMin(),
  444.      getSize(), getStrides(), getSubTile(), getSubTile3D(), getTile(),
  445.      getTile3D(), getWidth(), getXsize(), getYsize(), getZsize(),
  446.      hasPageBorder(), hasPages(), hwDefine(), hwGetPass(), inherit(),
  447.      initColorModel(), initHwEnable(), initMinMax(), initPageSize(),
  448.      initScaleMinMax(), isColorImg(), isIntegral(), isMirrorOrientation(),
  449.      isPartialPage(), isSigned(), isValidPage(), isWritable(), lockPage(),
  450.      lockPageSet(), lockTile(), lockTile3D(), mapFlipTrans(), mapFromInput(),
  451.      mapFromSource(), mapOrientation(), mapSize(), mapTile(), mapToInput(),
  452.      mapToSource(), mapXY(), mapXYSign(), outOfBound(), qCopyTileCfg(),
  453.      qFillTile3D(), qFillTileRGB(), qGetSubTile3D(), qGetTile3D(),
  454.  
  455.  
  456.  
  457.                                                                         PPPPaaaaggggeeee 7777
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464. iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))    IIIImmmmaaaaggggeeeeVVVViiiissssiiiioooonnnn LLLLiiiibbbbrrrraaaarrrryyyy CCCC++++++++ RRRReeeeffffeeeerrrreeeennnncccceeee MMMMaaaannnnuuuuaaaallll    iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))
  465.  
  466.  
  467.  
  468.      qLockPageSet(), qSetSubTile3D(), qSetTile3D(), removeHwHint(),
  469.      removeInput(), reset(), setColorModel(), setColormap(), setCompression(),
  470.      setCsize(), setDataType(), setDisplayCacheEnable(), setFill(),
  471.      setFillValue(), setHwEnable(), setHwHint(), setHwIntHint(), setInput(),
  472.      setMaxColormapLevels(), setMaxValue(), setMinValue(), setNumChans(),
  473.      setNumInputs(), setOrder(), setOrientation(), setPageBorder(),
  474.      setPageSize(), setPageSizeC(), setPageSizeZ(), setPixel(), setPixel3D(),
  475.      setPriority(), setScaleMinMax(), setScaleType(), setSize(), setSubTile(),
  476.      setSubTile3D(), setTile(), setTile3D(), setTileRequirementFunction(),
  477.      setWritable(), setXsize(), setYsize(), setZsize(), unlockPage(),
  478.      unlockPageSet()
  479.  
  480.    IIIInnnnhhhheeeerrrriiiitttteeeedddd ffffrrrroooommmm iiiillllLLLLiiiinnnnkkkk
  481.      addResetCallback(), alterAction(), anyAltered(), clearAllowed(),
  482.      clearSet(), clearStatus(), deleteRelated(), disableAltered(),
  483.      dumpChain(), getClassPropSet(), getDescription(), getDirectParent(),
  484.      getDisabledIndex(), getFloatProp(), getGenerationID(), getIntProp(),
  485.      getMaxIndex(), getMinIndex(), getNumChildren(), getNumParents(),
  486.      getParent(), getProp(), getProp(), getPropSet(), getPtrProp(),
  487.      getRelatedChild(), getRelatedDelete(), getRelatedType(), getStatus(),
  488.      hasResetCallbacks(), ilGetClassPropSet(), inProgress(), isAllowed(),
  489.      isAltered(), isEnabled(), isRelated(), isSet(), markSet(), mpUnlock(),
  490.      neverReset(), newRelatedType(), removeParent(), removeProp(),
  491.      removeResetCallback(), reset(), resetAltered(), resetCheck(),
  492.      setAllowed(), setAltered(), setDescription(), setDisabledIndex(),
  493.      setEnabled(), setParent(), setProp(), setPropAltered(),
  494.      setRelatedDelete(), setRelatedType(), setStatus(), stopWatching(),
  495.      unalterable(), watch(), watchNotify()
  496.  
  497. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  498.      ilImage, ilCache, ilOpImg
  499.  
  500. NNNNOOOOTTTTEEEESSSS
  501.      If _w_T_y_p_e is different from _d_t_y_p_e, then the derived class must convert the
  502.      data type between the input buffer and the output buffer.
  503.  
  504.      Note that an even-sized kernel causes a half-pixel shift away from the
  505.      origin because the center of the kernel is _b_e_t_w_e_e_n the center elements.
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.                                                                         PPPPaaaaggggeeee 8888
  524.  
  525.  
  526.  
  527.